﻿/*************************************************************************************

- CLR版本：        4.0.30319.42000
- 类 名 称：       TaskTool
- 机器名称：       YTE
- 命名空间：       LD.Tool.Other
- 文 件 名：       TaskTool
- 创建时间：       2022/6/14 12:03:04
- 作    者：       YTE
- 说   明：
- 修改时间：
- 修 改 人：
  *************************************************************************************/

using FluentFTP.Helpers;
using FluentFTP;
using LD.Host;
using Newtonsoft.Json.Linq;
using System.IO;
using System.Windows.Forms;
using System.Linq;
using System;
using System.Threading.Tasks;

namespace LD.Tool
{
    [Tool(FrmParam = "ToolImageBarcodeBindFrm", Text = "条码文件绑定", ToolType = ToolEnum.Other)]
    public class ToolImageBarcodeBind : BaseTool
    {
        public override OpResult Execute(TB_Tool model)
        {
            stopwatch.Start();
            isSuccess = false;
            if (!string.IsNullOrEmpty(model.Param))
            {
                JObject obj = JObject.Parse(model.Param);

                string dir = obj["dir"].ToString();
                string subffix = obj["subffix"].ToString();

                try
                {
                    string newDic = dir + "\\WaitUpload";
                    if (!Directory.Exists(newDic))
                        Directory.CreateDirectory(newDic);

                    var images = Directory.GetFiles(dir, ".", SearchOption.TopDirectoryOnly)
                        .Where(s => s.EndsWith(subffix));
                    if (images.Count() > 0)
                    {
                        bool _isSuccess = true;
                        foreach (var item in images)
                        {
                            string barcode = (string)Cache.Var.Where(p => p.Name == obj["barcode"].ToString())
                                                .FirstOrDefault()
                                                .Val;
                            barcode = barcode.Trim();
                            if ((bool)obj["addDate"])
                                barcode = barcode + "_" + DateTime.Now.ToString("yyyyMMddHHmmssfff") + "." + subffix;
                            else
                                barcode += "." + subffix;
                            //Path.GetDirectoryName(item)
                            string newFileName = Path.Combine(newDic, barcode);

                            //修改文件名
                            if (File.Exists(item))
                                File.Move(item, newFileName);
                            else
                                _isSuccess = false;

                            Task.Delay(10).Wait();
                        }

                        if (_isSuccess)
                            isSuccess = true;
                    }
                    else
                    {
                        //没文件默认为ok，防止跳转后流程失败，文件无法上传的问题
                        isSuccess = true;
                        Log(model, "源文件不存在", LogLevel.警告);
                    }
                }
                catch (Exception ex)
                {
                    isSuccess = false;
                    Log4.Error(ex);
                }
            }
            stopwatch.Stop();
            return new OpResult() { IsSuccess = isSuccess, Message = "", ExecuteTime = stopwatch.ElapsedMilliseconds };
        }
    }
}
